Excel ফাইল পড়া এবং ডেটা এক্সট্র্যাক্ট করা

Java Technologies - অ্যাপাচি পিওআই (Apache POI)
163

Apache POI একটি শক্তিশালী Java লাইব্রেরি যা Microsoft Excel ফাইলগুলির সাথে কাজ করার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি XLS এবং XLSX ফরম্যাটের Excel ফাইল পড়তে এবং তাদের থেকে ডেটা এক্সট্র্যাক্ট করতে পারবেন। HSSF এবং XSSF API ব্যবহার করে Excel ফাইলের ডেটা পড়া সম্ভব।

এখানে XSSF ব্যবহার করে .xlsx ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার একটি উদাহরণ দেওয়া হচ্ছে।


১. Excel ফাইল পড়া (XSSF)

XSSF API .xlsx ফাইল (Excel 2007 এবং পরবর্তী সংস্করণ) পড়ার জন্য ব্যবহৃত হয়।

কোড উদাহরণ (Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করা):

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ExcelDataExtraction {

    public static void main(String[] args) throws IOException, InvalidFormatException {
        // Excel ফাইল লোড করা
        FileInputStream fis = new FileInputStream(new File("example.xlsx"));
        
        // Workbook তৈরি করা (XSSF ব্যবহার করা হচ্ছে .xlsx ফাইলের জন্য)
        Workbook workbook = new XSSFWorkbook(fis);
        
        // Sheet থেকে প্রথম শিট নির্বাচন করা (শিটের নাম অনুযায়ীও সিলেক্ট করা যেতে পারে)
        Sheet sheet = workbook.getSheetAt(0);
        
        // Sheet এর প্রতিটি Row এবং Cell পড়া
        for (Row row : sheet) {
            for (Cell cell : row) {
                // Cell থেকে ডেটা পড়া
                switch (cell.getCellType()) {
                    case STRING:
                        System.out.print(cell.getStringCellValue() + "\t\t");
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t\t");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t\t");
                        break;
                    default:
                        System.out.print("UNKOWN\t\t");
                }
            }
            System.out.println();
        }

        // Workbook বন্ধ করা
        workbook.close();
        fis.close();
    }
}

কোড ব্যাখ্যা:

  1. Excel ফাইল লোড করা:
    • FileInputStream এর মাধ্যমে Excel ফাইলটি লোড করা হয়।
  2. Workbook তৈরি করা:
    • XSSFWorkbook ক্লাস ব্যবহার করে .xlsx ফাইলের জন্য Workbook তৈরি করা হয়।
  3. Sheet নির্বাচন করা:
    • workbook.getSheetAt(0) এর মাধ্যমে প্রথম শিটটি নির্বাচিত হয়। আপনি শিটের নামের মাধ্যমে workbook.getSheet("SheetName") ব্যবহার করে নির্দিষ্ট শিটও সিলেক্ট করতে পারেন।
  4. Row এবং Cell পড়া:
    • Sheet থেকে প্রতিটি Row এবং Cell পড়া হয় এবং Cell এর ধরনের (String, Numeric, Boolean) ওপর ভিত্তি করে ডেটা এক্সট্র্যাক্ট করা হয়।
  5. Cell Type অনুযায়ী ডেটা:
    • cell.getCellType() ব্যবহার করে Cell এর ডেটা টাইপ চেক করা হয় এবং তারপরে ডেটা ধরনের উপর ভিত্তি করে ডেটা প্রিন্ট করা হয়।

২. Excel ফাইল পড়া (HSSF) - .xls ফাইলের জন্য

HSSF API .xls ফাইল (Excel 97-2003) পড়ার জন্য ব্যবহৃত হয়। এটি XSSF API এর মতোই কাজ করে, তবে .xls ফাইলের জন্য ব্যবহার করা হয়।

কোড উদাহরণ (HSSF ব্যবহার করে .xls ফাইল পড়া):

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadOldExcel {

    public static void main(String[] args) throws IOException {
        // .xls ফাইল লোড করা
        FileInputStream fis = new FileInputStream(new File("example.xls"));
        
        // Workbook তৈরি করা (HSSF ব্যবহার করা হচ্ছে .xls ফাইলের জন্য)
        Workbook workbook = new HSSFWorkbook(fis);
        
        // Sheet থেকে প্রথম শিট নির্বাচন করা
        Sheet sheet = workbook.getSheetAt(0);
        
        // Sheet এর প্রতিটি Row এবং Cell পড়া
        for (Row row : sheet) {
            for (Cell cell : row) {
                // Cell থেকে ডেটা পড়া
                switch (cell.getCellType()) {
                    case STRING:
                        System.out.print(cell.getStringCellValue() + "\t\t");
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t\t");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t\t");
                        break;
                    default:
                        System.out.print("UNKOWN\t\t");
                }
            }
            System.out.println();
        }

        // Workbook বন্ধ করা
        workbook.close();
        fis.close();
    }
}

৩. Cell Data Formatting

Excel ফাইল থেকে ডেটা পড়ার সময় কিছু ক্ষেত্রে আপনি cell formatting বা date formatting দেখতে পাবেন। উদাহরণস্বরূপ, যদি একটি Cell তে তারিখ থাকে, তাহলে আপনাকে সেটা সঠিকভাবে পড়তে হবে। নিচে তার একটি উদাহরণ দেওয়া হচ্ছে:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExcelDateExample {
    public static void main(String[] args) throws IOException {
        // Excel ফাইল লোড করা
        FileInputStream fis = new FileInputStream("example.xlsx");

        // Workbook তৈরি করা
        Workbook workbook = new XSSFWorkbook(fis);

        // প্রথম শিট নির্বাচন করা
        Sheet sheet = workbook.getSheetAt(0);

        // Row এবং Cell পড়া
        for (Row row : sheet) {
            for (Cell cell : row) {
                if (cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) {
                    // তারিখ ফরম্যাটে ডেটা পড়া
                    Date date = cell.getDateCellValue();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    System.out.println(sdf.format(date));
                } else {
                    // অন্য ডেটা টাইপ পড়া
                    System.out.print(cell.toString() + "\t\t");
                }
            }
            System.out.println();
        }

        // Workbook বন্ধ করা
        workbook.close();
        fis.close();
    }
}

এখানে DateUtil.isCellDateFormatted(cell) ব্যবহার করা হয়েছে, যা চেক করে যে Cell তে থাকা ডেটা একটি তারিখ (Date) ফরম্যাটে আছে কিনা।

Apache POI এর মাধ্যমে Excel ফাইল পড়া এবং ডেটা এক্সট্র্যাক্ট করা খুবই সহজ এবং কার্যকরী। আপনি XSSF এবং HSSF API ব্যবহার করে .xlsx এবং .xls ফাইল থেকে ডেটা এক্সট্র্যাক্ট করতে পারেন। এটি বিভিন্ন ধরনের ডেটা, যেমন টেক্সট, সংখ্যার মান, তারিখ ইত্যাদি পড়তে সক্ষম।

  • XSSF API ব্যবহার করুন যদি আপনি .xlsx (Excel 2007+) ফাইল থেকে ডেটা এক্সট্র্যাক্ট করতে চান।
  • HSSF API ব্যবহার করুন .xls (Excel 97-2003) ফাইল থেকে ডেটা এক্সট্র্যাক্ট করতে।

এছাড়াও, ডেটা ফরম্যাটিং (যেমন তারিখ) এবং অন্যান্য প্রকারের ডেটা হ্যান্ডলিংয়ের জন্য আপনাকে কিছু অতিরিক্ত কোড ব্যবহার করতে হতে পারে।

Content added By

বিদ্যমান Excel ফাইল লোড করা

208

Apache POI ব্যবহার করে বিদ্যমান Excel ফাইল (.xls বা .xlsx) লোড করা খুবই সহজ। আপনি HSSF (পুরনো .xls ফাইল) এবং XSSF (নতুন .xlsx ফাইল) API ব্যবহার করে এই কাজটি করতে পারেন। এখানে আমরা দুটি আলাদা উদাহরণ দেখব — একটিতে HSSF এবং অন্যটিতে XSSF ব্যবহার করা হবে।


১. XSSF ব্যবহার করে .xlsx ফাইল লোড করা

XSSF ব্যবহার করে আপনি Excel 2007 বা পরবর্তী সংস্করণের .xlsx ফাইল লোড করতে পারবেন। নিচে একটি উদাহরণ দেওয়া হল:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class LoadExcelXSSFExample {
    public static void main(String[] args) {
        try {
            // Excel ফাইল লোড করা (.xlsx)
            FileInputStream file = new FileInputStream(new File("example.xlsx"));
            Workbook workbook = new XSSFWorkbook(file); // XSSFWorkbook ব্যবহার করা

            // প্রথম শীট (Sheet) নির্বাচন
            Sheet sheet = workbook.getSheetAt(0); 

            // প্রতিটি সারি এবং সেলের ডেটা পড়া
            for (Row row : sheet) {
                for (Cell cell : row) {
                    switch (cell.getCellType()) {
                        case STRING:
                            System.out.print(cell.getStringCellValue() + "\t");
                            break;
                        case NUMERIC:
                            System.out.print(cell.getNumericCellValue() + "\t");
                            break;
                        case BOOLEAN:
                            System.out.print(cell.getBooleanCellValue() + "\t");
                            break;
                        default:
                            System.out.print("UNKNOWN" + "\t");
                    }
                }
                System.out.println();
            }

            // ফাইল বন্ধ করা
            workbook.close();
            file.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • FileInputStream: এই ক্লাসটি ব্যবহার করে আপনি Excel ফাইলটি লোড করেন।
  • XSSFWorkbook: এটি .xlsx ফাইল লোড করার জন্য ব্যবহৃত।
  • getSheetAt(0): প্রথম শীটটি নির্বাচন করা হয় (শীটের ইনডেক্স 0 থেকে শুরু হয়)।
  • সেল টাইপের উপর ভিত্তি করে, String, Numeric, বা Boolean ডেটা নিয়ে কাজ করা হয়।

২. HSSF ব্যবহার করে .xls ফাইল লোড করা

HSSF ব্যবহার করে আপনি Excel 97-2003 ফাইল (যেমন .xls) লোড করতে পারেন। নিচে একটি উদাহরণ দেওয়া হল:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class LoadExcelHSSFExample {
    public static void main(String[] args) {
        try {
            // Excel ফাইল লোড করা (.xls)
            FileInputStream file = new FileInputStream(new File("example.xls"));
            Workbook workbook = new HSSFWorkbook(file); // HSSFWorkbook ব্যবহার করা

            // প্রথম শীট (Sheet) নির্বাচন
            Sheet sheet = workbook.getSheetAt(0);

            // প্রতিটি সারি এবং সেলের ডেটা পড়া
            for (Row row : sheet) {
                for (Cell cell : row) {
                    switch (cell.getCellType()) {
                        case STRING:
                            System.out.print(cell.getStringCellValue() + "\t");
                            break;
                        case NUMERIC:
                            System.out.print(cell.getNumericCellValue() + "\t");
                            break;
                        case BOOLEAN:
                            System.out.print(cell.getBooleanCellValue() + "\t");
                            break;
                        default:
                            System.out.print("UNKNOWN" + "\t");
                    }
                }
                System.out.println();
            }

            // ফাইল বন্ধ করা
            workbook.close();
            file.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • FileInputStream: Excel ফাইলটি লোড করতে ব্যবহার করা হয়।
  • HSSFWorkbook: এটি .xls ফাইল লোড করার জন্য ব্যবহৃত হয়।
  • getSheetAt(0): প্রথম শীটটি নির্বাচন করা হয় (শীটের ইনডেক্স 0 থেকে শুরু হয়)।
  • সেল টাইপের উপর ভিত্তি করে, String, Numeric, বা Boolean ডেটা নিয়ে কাজ করা হয়।

সারাংশ

  • XSSF ব্যবহার করে আপনি .xlsx ফাইল লোড করবেন, এবং HSSF ব্যবহার করে আপনি .xls ফাইল লোড করবেন।
  • ফাইল লোড করার পর, আপনি শীটের মধ্যে থাকা প্রতিটি Row এবং Cell এর ডেটা অ্যাক্সেস করতে পারেন।
  • প্রতিটি সেলের ডেটার টাইপ অনুযায়ী (যেমন String, Numeric, Boolean) ডেটা রিড করতে হয়।

এইভাবে আপনি Apache POI ব্যবহার করে বিদ্যমান Excel ফাইলটি সহজেই লোড এবং ম্যানিপুলেট করতে পারেন।

Content added By

Sheet, Row এবং Cell থেকে ডেটা পড়া

190

Apache POI লাইব্রেরি ব্যবহার করে Excel ফাইল থেকে ডেটা পড়তে হলে আপনাকে Sheet, Row, এবং Cell স্তরের ডেটা এক্সেস করতে হবে। এই প্রক্রিয়াটি বেশ সোজা, যেখানে আপনি প্রথমে Excel ফাইলটি লোড করবেন, তারপর নির্দিষ্ট Sheet থেকে Row এবং Cell গুলি অ্যাক্সেস করবেন।

এখানে XSSF (Excel 2007 এবং পরবর্তী সংস্করণের জন্য) এবং HSSF (পুরানো Excel ফরম্যাট, যেমন .xls ফাইল) ক্লাস ব্যবহার করা হয়।


1. Excel ফাইল লোড করা

প্রথমে, Apache POI এর XSSFWorkbook (Excel 2007 বা এর পরবর্তী সংস্করণ) ক্লাস ব্যবহার করে Excel ফাইল লোড করা হয়।

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.io.FileInputStream;
import java.io.IOException;

public class ExcelReader {
    public static void main(String[] args) throws IOException {
        // Excel ফাইল লোড করা
        FileInputStream file = new FileInputStream("example.xlsx");
        
        // Workbook তৈরি করা (XSSFWorkbook ব্যবহার করছি Excel 2007 এবং পরবর্তী সংস্করণের জন্য)
        XSSFWorkbook workbook = new XSSFWorkbook(file);

        // প্রথম Sheet পাওয়া
        Sheet sheet = workbook.getSheetAt(0); // প্রথম Sheet, Sheet নাম অনুযায়ীও পেতে পারেন

2. Sheet, Row, এবং Cell থেকে ডেটা পড়া

এখন, Sheet থেকে Row এবং Cell পর্যন্ত এক্সেস করতে হবে। Sheet থেকে প্রতিটি Row এবং তার মধ্যে থাকা Cell গুলি পড়ার জন্য for লুপ ব্যবহার করা হয়।

        // Sheet থেকে Row এবং Cell এর মাধ্যমে ডেটা পড়া
        for (Row row : sheet) {
            for (Cell cell : row) {
                switch (cell.getCellType()) {
                    case STRING:
                        System.out.print(cell.getStringCellValue() + "\t");
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t");
                        break;
                    default:
                        System.out.print("Invalid cell type" + "\t");
                }
            }
            System.out.println();  // এক লাইনের পর নতুন লাইন শুরু
        }

        // Excel ফাইল বন্ধ করা
        workbook.close();
        file.close();
    }
}

3. কোডের ব্যাখ্যা:

  • XSSFWorkbook workbook = new XSSFWorkbook(file); – এই লাইনে আমরা Excel ফাইলটি লোড করছি।
  • Sheet sheet = workbook.getSheetAt(0); – এখানে আমরা প্রথম Sheet টি পাচ্ছি (Sheet নাম দিয়েও অ্যাক্সেস করা যায়)।
  • for (Row row : sheet) – প্রতিটি Row এর উপর লুপ চলছে।
  • for (Cell cell : row) – প্রতিটি Row এর মধ্যে থাকা Cell এর উপর লুপ চলছে।
  • cell.getCellType() – এখানে আমরা Cell এর ধরন চেক করছি (যেমন STRING, NUMERIC, BOOLEAN ইত্যাদি) এবং তার উপর ভিত্তি করে ডেটা বের করছি।

4. Excel ফাইলের বিভিন্ন ডেটা টাইপ:

  • STRING: টেক্সট ডেটা।
  • NUMERIC: সংখ্যা।
  • BOOLEAN: বুলিয়ান (True/False) মান।
  • FORMULA: যদি কোন Formula থাকে, তবে তার জন্য আলাদা ট্রিটমেন্ট প্রয়োজন।

5. Cell এর Value পাওয়ার উদাহরণ:

  • String Cell থেকে ডেটা পাওয়ার জন্য:

    String value = cell.getStringCellValue();
    
  • Numeric Cell থেকে ডেটা পাওয়ার জন্য:

    double value = cell.getNumericCellValue();
    
  • Boolean Cell থেকে ডেটা পাওয়ার জন্য:

    boolean value = cell.getBooleanCellValue();
    

সারাংশ

এই প্রক্রিয়ায় আপনি Apache POI ব্যবহার করে Excel ফাইলের মধ্যে থাকা Sheet, Row, এবং Cell থেকে ডেটা সহজেই এক্সেস করতে পারেন।

  • Sheet: Excel এর পাতা বা ট্যাব।
  • Row: Sheet এর সারি।
  • Cell: Row এর সেল যেখানে ডেটা রাখা থাকে।

এটি ব্যবহার করে আপনি বিভিন্ন ধরনের ডেটা (টেক্সট, সংখ্যা, বুলিয়ান) এক্সেস এবং প্রসেস করতে পারবেন।


Content added By

Cell Type এবং Data Formatting

162

Apache POI এর সাহায্যে Excel ফাইলের সাথে কাজ করার সময়, বিশেষ করে XSSF বা HSSF মডিউল ব্যবহার করে আপনি সেল (Cell) এর ডেটা টাইপ এবং ফরম্যাটিং পরিচালনা করতে পারবেন। সেলগুলোর মধ্যে বিভিন্ন ধরনের ডেটা থাকতে পারে, যেমন টেক্সট, নাম্বার, তারিখ, ইত্যাদি। এগুলোর সঠিকভাবে প্রদর্শন এবং ব্যবস্থাপনা করতে সেল টাইপ এবং ফরম্যাটিং অপরিহার্য।

এখানে Apache POI তে Cell Type এবং Data Formatting কিভাবে করা যায়, সে সম্পর্কে বিস্তারিত আলোচনা করা হলো।


Cell Type

Cell Type বা সেল এর ধরন হলো একটি নির্দিষ্ট ধরনের ডেটা যা সেই সেলে সংরক্ষিত থাকে। POI এর মাধ্যমে আপনি একটি সেলে বিভিন্ন ধরনের ডেটা রাখতে পারেন, যেমন String, Numeric, Boolean, Date ইত্যাদি। সেল টাইপ সঠিকভাবে নির্ধারণ করার জন্য আপনি CellType শ্রেণী ব্যবহার করতে পারেন।

প্রধান সেল টাইপ:

  1. CellType.STRING
    এটি টেক্সট বা স্ট্রিং ডেটার জন্য ব্যবহৃত হয়। যখন সেলে কোনো পাঠ্য (text) ডেটা রাখা হয়, তখন এর টাইপ হবে STRING
  2. CellType.NUMERIC
    এই টাইপটি সংখ্যার জন্য ব্যবহৃত হয়। সংখ্যা (integer, decimal) এবং তারিখ (Date) সংরক্ষণ করার জন্য NUMERIC টাইপ ব্যবহার করা হয়। তারিখের জন্য বিশেষভাবে Date ফরম্যাটের প্রয়োগ করা হয়।
  3. CellType.BOOLEAN
    এই সেল টাইপটি true বা false এর মান রাখার জন্য ব্যবহৃত হয়।
  4. CellType.FORMULA
    এই টাইপটি সেলে একটি Formula (যেমন SUM, AVERAGE ইত্যাদি) ব্যবহার করার জন্য ব্যবহৃত হয়।
  5. CellType.BLANK
    এটি খালি সেলের জন্য ব্যবহৃত হয়। যদি কোনো সেলে কোনো মান না থাকে তবে এটি BLANK টাইপ হয়।

Data Formatting

Excel সেলের ডেটা ফরম্যাটিং এর মাধ্যমে আপনি তথ্য কে একটি সুন্দর এবং উপযুক্ত ফরম্যাটে রূপান্তর করতে পারেন, যেমন তারিখ, সংখ্যা বা মুদ্রা (currency) ফরম্যাট। POI আপনাকে কাস্টম CellStyle তৈরি করার মাধ্যমে এই ফরম্যাটিং করার সুযোগ দেয়।

১. Number Formatting

Number formatting হল সংখ্যা বা দশমিকের মান উপস্থাপনের একটি উপায়। আপনি CellStyle ব্যবহার করে Excel সেলে সংখ্যা এবং তারিখের ফরম্যাট নির্ধারণ করতে পারেন।

উদাহরণ:

CellStyle cellStyle = workbook.createCellStyle();
DataFormat format = workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("0.00")); // দুই দশমিকের সংখ্যা ফরম্যাট

এখানে, 0.00 ফরম্যাটটি দুই দশমিক পর্যন্ত সংখ্যা প্রদর্শন করবে। এর পরিবর্তে আপনি অন্যান্য ফরম্যাট যেমন "#,##0" (কমা সহ সংখ্যা), "0%" (শতাংশ), "₹#,##0.00" (মুদ্রা) ইত্যাদি ব্যবহার করতে পারেন।

২. Date Formatting

Excel সেলে তারিখের জন্য বিশেষ ফরম্যাট ব্যবহৃত হয়, যা DataFormat শ্রেণী দ্বারা কাস্টমাইজ করা যায়। আপনি Date টাইপের সেলেও ফরম্যাট প্রয়োগ করতে পারেন।

উদাহরণ:

CellStyle cellStyle = workbook.createCellStyle();
DataFormat format = workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("yyyy-mm-dd")); // তারিখ ফরম্যাট

এখানে, yyyy-mm-dd তারিখের ফরম্যাটের জন্য ব্যবহৃত হচ্ছে, যেমন 2024-12-17।

৩. Text Formatting

টেক্সটের জন্য সাধারণত সেল স্টাইল ব্যবহার করা হয়। আপনি Font এবং CellStyle ব্যবহার করে টেক্সটের ফন্ট, আকার, রঙ এবং অন্যান্য ফরম্যাটিং পরিবর্তন করতে পারেন।

উদাহরণ:

CellStyle cellStyle = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
font.setColor(IndexedColors.RED.getIndex());
cellStyle.setFont(font);

এখানে, ফন্টটি Bold এবং Red রঙে সেট করা হয়েছে।

৪. Currency Formatting

আপনি Excel সেলে মুদ্রা (Currency) ফরম্যাটও প্রয়োগ করতে পারেন, যেমন: টাকা, ডলার বা ইউরো।

উদাহরণ:

CellStyle cellStyle = workbook.createCellStyle();
DataFormat format = workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("₹ #,##0.00")); // মুদ্রা ফরম্যাট

এখানে, ₹ #,##0.00 ব্যবহার করা হয়েছে যাতে টাকা বা মুদ্রা মানটি উপস্থাপন করা যায়।


সারাংশ

Apache POI এর মাধ্যমে Excel সেলের টাইপ এবং ডেটা ফরম্যাটিং একটি গুরুত্বপূর্ণ বিষয়। আপনি CellType ব্যবহার করে সেল টাইপ নির্ধারণ করতে পারেন, এবং CellStyleDataFormat এর মাধ্যমে সেলের ফরম্যাটিং পরিচালনা করতে পারেন। বিভিন্ন ধরনের ডেটা যেমন টেক্সট, সংখ্যা, তারিখ, মুদ্রা ইত্যাদির জন্য ফরম্যাটিং প্রয়োগ করে একটি প্রফেশনাল রিপোর্ট বা ডকুমেন্ট তৈরি করা সম্ভব।

এই সুবিধাগুলি আপনাকে Apache POI ব্যবহার করে আরো উন্নত এবং কাস্টমাইজড Excel ডকুমেন্ট তৈরি করতে সাহায্য করবে।


Content added By

Large Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করা

154

Apache POI একটি শক্তিশালী Java লাইব্রেরি যা Excel ফাইলের ডেটা পড়া, লেখা এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। Large Excel Files থেকে ডেটা এক্সট্র্যাক্ট করা একটি চ্যালেঞ্জ হতে পারে, বিশেষত যখন ফাইলের আকার অনেক বড় হয় এবং মেমরি কনস্ট্রেইন্ট থাকে। এই সমস্যা মোকাবিলায়, POI লাইব্রেরি দুটি ভিন্ন API প্রদান করে: HSSF (Horrible Spreadsheet Format) এবং XSSF (XML Spreadsheet Format)। XSSF Excel 2007 (.xlsx) ফাইলের জন্য ব্যবহৃত হয়, এবং HSSF পুরোনো Excel 2003 (.xls) ফাইলের জন্য ব্যবহৃত হয়।

বিশেষত বড় ফাইলগুলো থেকে ডেটা এক্সট্র্যাক্ট করতে Streaming API (SXSSF) ব্যবহার করা সবচেয়ে ভালো পদ্ধতি, যেটি মেমরি ব্যবস্থাপনা উন্নত করে এবং বড় Excel ফাইলের জন্য কার্যকরী।

নিচে Apache POI ব্যবহার করে Large Excel Files থেকে ডেটা এক্সট্র্যাক্ট করার জন্য পদক্ষেপগুলো দেওয়া হলো।


১. SXSSF ব্যবহার করে Large Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করা

SXSSF API POI এর একটি উন্নত সংস্করণ, যা XSSF এর মতোই কাজ করে তবে এটি এক্সট্রা মেমরি ব্যবহারের চেয়ে কম করে। এটি বড় Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার জন্য সবচেয়ে উপযুক্ত।

ডিপেন্ডেন্সি যুক্ত করা (Maven)

প্রথমে, আপনাকে SXSSF ব্যবহার করার জন্য poi-ooxml লাইব্রেরির সর্বশেষ ভার্সন pom.xml এ যুক্ত করতে হবে।

<dependencies>
    <!-- Apache POI (for working with Excel files) -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
</dependencies>

২. Large Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার উদাহরণ

এখন, একটি large Excel file থেকে ডেটা পড়ার উদাহরণ দেওয়া হলো, যেখানে SXSSF ব্যবহার করা হয়েছে।

উদাহরণ: Large Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করা

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class LargeExcelExtractor {

    public static void main(String[] args) throws IOException, InvalidFormatException {
        FileInputStream file = new FileInputStream(new File("large_excel_file.xlsx"));
        
        // SXSSFWorkbook (streaming version of XSSFWorkbook) ব্যবহার করা
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        
        // Excel শীট নির্বাচন করা
        XSSFSheet sheet = workbook.getSheetAt(0);

        // শীটের প্রতিটি রো পড়া
        for (Row row : sheet) {
            for (Cell cell : row) {
                // সেল ডেটা প্রিন্ট করা (যেমন String, Numeric, Date ইত্যাদি)
                switch (cell.getCellTypeEnum()) {
                    case STRING:
                        System.out.print(cell.getStringCellValue() + "\t\t");
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t\t");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t\t");
                        break;
                    default:
                        System.out.print("Unknown Type\t\t");
                        break;
                }
            }
            System.out.println();
        }

        // ফাইল বন্ধ করা
        workbook.close();
        file.close();
    }
}

কোড ব্যাখ্যা:

  1. XSSFWorkbook: এটি .xlsx ফাইলের জন্য ব্যবহৃত। SXSSFWorkbook এর মাধ্যমে ডেটা স্ট্রিমিং করতে POI এর উন্নত সংস্করণ ব্যবহৃত হয়।
  2. FileInputStream: Excel ফাইলটি খোলার জন্য ব্যবহার করা হয়।
  3. sheet.getRow(): শীট থেকে রো আনা এবং সেটি পড়া।
  4. cell.getCellTypeEnum(): সেলের ডেটা টাইপ (String, Numeric, Boolean) চেক করে, তারপর সেই অনুযায়ী ডেটা প্রিন্ট করা হয়।

এই কোডটি বড় Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার জন্য উপযুক্ত। মেমরি ব্যবস্থাপনা কৌশল হিসেবে SXSSFWorkbook এর মাধ্যমে স্ট্রিমিং করা হয় যাতে বড় ফাইলগুলো পড়তে গিয়ে মেমরি সমস্যার সম্মুখীন না হন।


৩. Streaming Excel Files with SXSSF

SXSSF ব্যবহার করলে Excel ফাইলকে একবারে পুরোপুরি মেমরিতে লোড না করে ছোট ছোট অংশে লোড করা যায়। এতে করে memory footprint কমে এবং ফাইলের আকার যতো বড় হোক না কেন, আপনি আরও দক্ষতার সাথে কাজ করতে পারবেন।

উদাহরণ: স্ট্রিমিং মোডে Excel ফাইল লেখা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class StreamingExcelWriter {

    public static void main(String[] args) throws IOException {
        // SXSSFWorkbook তৈরি (streaming version)
        SXSSFWorkbook workbook = new SXSSFWorkbook();
        Sheet sheet = workbook.createSheet("Example Sheet");

        // ডেটা লিখার জন্য কিছু রো তৈরি করা
        for (int i = 0; i < 100000; i++) {
            Row row = sheet.createRow(i);
            for (int j = 0; j < 10; j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue("Data " + i + "," + j);
            }
        }

        // Excel ফাইল সেভ করা
        FileOutputStream fileOut = new FileOutputStream("streamed_output.xlsx");
        workbook.write(fileOut);
        fileOut.close();

        // SXSSFWorkbook পরিষ্কার করা (ডাটা ফ্লাশ করা)
        workbook.dispose();
    }
}

এখানে, 100,000 রো এবং 10 কলামসহ ডেটা তৈরি করা হয়েছে এবং এক্সেল ফাইলের মধ্যে সংরক্ষণ করা হয়েছে। SXSSFWorkbook ব্যবহার করা হয়েছে যাতে মেমরি ব্যবস্থাপনা আরও দক্ষ হয়।


৪. Performance Tips for Large Excel File Processing

  • SXSSF ব্যবহার করুন: মেমরি ব্যবস্থাপনা উন্নত করতে বড় ফাইল থেকে ডেটা পড়ার সময় SXSSF ব্যবহার করুন।
  • FileInputStream ব্যবহার করুন: ফাইলটি মেমরিতে একবারে লোড না করে স্ট্রিমিংয়ের মাধ্যমে পড়ুন।
  • Temporary Files: বড় ফাইল প্রক্রিয়া করার সময়ে আপনি temporary files ব্যবহার করতে পারেন, যেগুলি প্রক্রিয়া শেষে ডিলিট করা হয়।
  • Row and Cell Iteration: একে একে রো এবং সেল পড়ুন, একবারে পুরো শীটকে লোড করা থেকে বিরত থাকুন।

সারাংশ

  • Large Excel Files থেকে ডেটা এক্সট্র্যাক্ট করতে Apache POI এর SXSSF API সবচেয়ে উপযুক্ত, যা মেমরি ব্যবস্থাপনা উন্নত করে এবং বড় ফাইলের প্রক্রিয়া দ্রুত করে।
  • SXSSF ব্যবহার করে, আপনি একে একে ছোট ছোট অংশে ডেটা এক্সট্র্যাক্ট করতে পারবেন, যাতে মেমরি অধিক ব্যবহার না হয় এবং আপনি বড় Excel ফাইলেও দক্ষতার সাথে কাজ করতে পারবেন।
  • FileInputStream এবং SXSSFWorkbook ক্লাসগুলো ব্যবহার করে streaming মোডে Excel ফাইল থেকে ডেটা পড়তে ও লিখতে পারবেন।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...